package com.jiyun.controller;

import com.jiyun.common.pojo.Mendian;
import com.jiyun.service.MendianService;
import com.jiyun.service.StandardService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.Collections;
import java.util.List;


@RestController
@RequestMapping("/mendian")
@Slf4j
public class MendianController {
    // 自动注入MendianService服务
    @Autowired
    MendianService mendianService;
    @Autowired
    private StandardService standardService;

    // 响应/findMendianAll请求，根据Mendian对象查询所有门店信息
    @RequestMapping("/findMendianAll")
    public List<Mendian> findMendianAll(@RequestBody Mendian mendian) {
        // 参数校验，判断传入的Mendian对象是否为null
        if (mendian == null) {
            // 记录日志，此处简单打印示例，实际建议使用专业日志框架详细记录
            System.err.println("传入的Mendian对象为null，无法进行查询操作");
            // 返回空列表作为兜底数据，防止调用方出现空指针异常
            return Collections.emptyList();
        }
        try {
            List<Mendian> resultList = mendianService.findMendianAll(mendian);
            // 对查询结果进行验证，若结果为空，返回空列表，增强接口的健壮性
            if (resultList == null) {
                System.err.println("查询到的门店信息列表为空");
                return Collections.emptyList();
            }
            return resultList;
        } catch (Exception e) {
            // 详细记录异常信息，方便排查问题（实际应用中建议用日志框架）
            System.err.println("执行查询所有门店信息操作时出现异常: " + e.getMessage());
            // 返回空列表作为兜底数据，防止调用方出现空指针异常
            return Collections.emptyList();
        }
    }

    // 响应zonghe请求，根据Mendian对象综合查询门店信息
    @RequestMapping("zonghe")
    public List<Mendian> zonghe(@RequestBody Mendian mendian) {
        // 参数校验，判断传入的Mendian对象是否为null，避免空指针异常
        if (mendian == null) {
            // 记录日志（此处简单打印示例，实际项目建议用专业日志框架详细记录）
            System.err.println("传入的Mendian对象为null，无法进行综合查询操作");
            return Collections.emptyList();
        }
        List<Mendian> resultList = mendianService.zonghe(mendian);
        // 对查询结果进行校验，若结果为空，返回空列表，增强接口的健壮性
        if (resultList == null) {
            System.err.println("综合查询门店信息的结果为空");
            return Collections.emptyList();
        }
        return resultList;
    }

    // 响应juli请求，根据Mendian对象查询门店信息
    @RequestMapping("juli")
    public List<Mendian> juli(@RequestBody Mendian mendian) {
        // 1. 参数校验，判断传入的Mendian对象是否为空，防止空指针异常
        if (mendian == null) {
            // 记录日志（这里简单打印，实际建议使用专业日志框架，如Log4j、Slf4j等详细记录）
            System.err.println("传入的Mendian对象为null，无法进行距离相关查询操作");
            return Collections.emptyList();
        }

        try {
            // 2. 调用服务层方法进行查询操作
            List<Mendian> resultList = mendianService.juli(mendian);
            // 3. 对查询结果进行校验，若结果为空，返回空列表，增强接口健壮性
            if (resultList == null) {
                System.err.println("根据距离查询门店信息的结果为空");
                return Collections.emptyList();
            }
            return resultList;
        } catch (Exception e) {
            // 4. 捕获可能出现的异常，记录详细异常信息（实际中用日志框架更好）
            System.err.println("执行距离相关查询门店信息操作时出现异常: " + e.getMessage());
            // 5. 返回空列表作为兜底数据，使接口在异常情况下也能返回合理数据，便于调用方处理
            return Collections.emptyList();
        }
    }

    // 响应fetchBackendData请求，根据value2的值从后台获取不同的数据
    @RequestMapping("fetchBackendData")
    public List<Mendian> fetchBackendData(Integer value2) {
        // 1. 参数校验，判断传入的value2是否为null，避免空指针异常
        if (value2 == null) {
            // 记录日志（此处简单打印示例，实际项目建议用专业日志框架详细记录）
            System.err.println("传入的参数value2为null，无法进行后台数据获取操作");
            return Collections.emptyList();
        }

        try {
            // 2. 根据不同的value2值调用对应的服务方法获取数据
            if (value2 == 1) {
                List<Mendian> mendians = mendianService.fetchBackendData1();
                // 对获取到的数据进行校验，若为空则返回空列表，增强接口健壮性
                if (mendians == null) {
                    System.err.println("获取后台数据1的结果为空");
                    return Collections.emptyList();
                }
                return mendians;
            } else if (value2 == 2) {
                List<Mendian> mendians = mendianService.fetchBackendData2();
                if (mendians == null) {
                    System.err.println("获取后台数据2的结果为空");
                    return Collections.emptyList();
                }
                return mendians;
            } else if (value2 == 3) {
                List<Mendian> mendians = mendianService.fetchBackendData3();
                if (mendians == null) {
                    System.err.println("获取后台数据3的结果为空");
                    return Collections.emptyList();
                }
                return mendians;
            }
        } catch (Exception e) {
            // 3. 捕获可能出现的异常，记录详细异常信息（实际中用日志框架更好）
            System.err.println("执行后台数据获取操作时出现异常: " + e.getMessage());
            // 4. 返回空列表作为兜底数据，使接口在异常情况下也能返回合理数据，便于调用方处理
            return Collections.emptyList();
        }
        // 5. 当value2的值不满足前面的条件时，同样返回空列表，保证接口返回值的一致性
        return Collections.emptyList();
    }

    // 响应validate请求，验证门店信息，根据尝试次数cishu进行验证
    @RequestMapping("validate")
    public List<Mendian> validate(Integer cishu) {
        // 1. 参数校验，判断传入的尝试次数cishu是否为null，避免空指针异常
        if (cishu == null) {
            // 记录日志（此处简单打印示例，实际项目建议用专业日志框架详细记录）
            System.err.println("传入的尝试次数cishu参数为null，无法进行门店信息验证操作");
            return Collections.emptyList();
        }

        try {
            // 2. 调用服务层方法进行验证操作
            List<Mendian> resultList = mendianService.validate(cishu);
            // 3. 对验证结果进行校验，若结果为空，返回空列表，增强接口健壮性
            if (resultList == null) {
                System.err.println("门店信息验证的结果为空");
                return Collections.emptyList();
            }
            return resultList;
        } catch (Exception e) {
            // 4. 捕获可能出现的异常，记录详细异常信息（实际中用日志框架更好）
            System.err.println("执行门店信息验证操作时出现异常: " + e.getMessage());
            // 5. 返回空列表作为兜底数据，使接口在异常情况下也能返回合理数据，便于调用方处理
            return Collections.emptyList();
        }
    }

    // 响应findMendianAllXq请求，根据门店ID查询门店详细信息
    @RequestMapping("findMendianAllXq")
    public List<Mendian> findMendianAllXq(Integer mid) {
        // 1. 参数校验，判断传入的门店ID是否为null，避免空指针异常
        if (mid == null) {
            // 记录日志（此处简单打印示例，实际项目建议用专业日志框架详细记录）
            System.err.println("传入的门店ID参数为null，无法进行门店详细信息查询操作");
            return Collections.emptyList();
        }

        try {
            // 2. 调用服务层方法进行查询操作
            List<Mendian> resultList = mendianService.findMendianAllXq(mid);
            // 3. 对查询结果进行校验，若结果为空，返回空列表，增强接口健壮性
            if (resultList == null) {
                System.err.println("门店详细信息查询结果为空");
                return Collections.emptyList();
            }
            return resultList;
        } catch (Exception e) {
            // 4. 捕获可能出现的异常，记录详细异常信息（实际中用日志框架更好）
            System.err.println("执行门店详细信息查询操作时出现异常: " + e.getMessage());
            // 5. 返回空列表作为兜底数据，使接口在异常情况下也能返回合理数据，便于调用方处理
            return Collections.emptyList();
        }
    }

}
